const baseUtils = {
  // 清空字符
  trim: function (str) {
      return str.replace(/^(\s|\u00A0)+/, '').replace(/(\s|\u00A0)+$/, '')
  },
  countDown: function(time, success){
    const timeA = function() {
      time--
      success(time + 's后重试')
      if (time == 0) return success('重新发送')
      setTimeout(timeA, 1000)
     }
    timeA()
  },
}

const fromUtils = {
  //校验名字
  checkName: function (value) {
    //为空或者只输入空格时
    const spaceReg = /^\s+$/;
    // 只能填写汉字、字母、数字
    //输入非数字、英文、汉字时，提示“请输入正确的收货人姓名”，姓名可以输入空格
    const formatReg = /^[\u4E00-\u9FFF|0-9\-|a-z|A-Z|\s]+$/;
    //最多30个字符
    const lenReg = /^[A-Za-z0-9\u4e00-\u9fa5]([A-Za-z0-9\u4e00-\u9fa5]|\s){29,}[A-Za-z0-9\u4e00-\u9fa5]$/;
    if (spaceReg.test(value)) {
      return "请输入收货人姓名"
    } else if (!(formatReg).test(value)) {
      return "请输入正确的收货人姓名"
    } else if (lenReg.test(value)) {
      return "收货人姓名最多30个字符"
    }
      return false
  },
  //校验密码
  checkPass: function (value){				
    if(value == ""){
      return "请输入密码"
    }
    var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{6,30}');
    if (!pwdRegex.test(value)) {
      return "至少六位数字带字母的密码";
    }
    return false
  },
  //校验手机号
  checkIphone: function(value){					
    const iphoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/;
    if (!iphoneReg.test(value) && value.length != 11) {
      return "请输入正确的手机号码";
    }
    return false
  },
  //校验验证码
  checkCode: function(value){					
    if (value.length != 6) {
      return "请输入正确的验证码";
    }
    return false
  },
  //校验地址
  checkDetail : function(value){
    //为空或者只输入空格时
    const spaceReg = /^\s+$/;
    if (value == "" || spaceReg.test(value)) {
      return "请填写详细信息";
    } else if (!(/^[\u4E00-\u9FFF|0-9\-|a-z|A-Z|\s|#\{\}\(\)\[\],\.。，（）｛｝【】\|]+$/.test(value))) {
      return "输入格式不正确(不能输入特殊字符)";
    } else if (value.length > 80) {
      return "最多输入80个字符";
    }
  },
  //校验Email
  checkEmail : function(value) {
     var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
     if(myreg.test(value)){
      return false;
     }
     return "请输入正确的邮箱";
  },
  // 校验身份证号
  checkIDCard : function(value){
    const spaceReg =/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/
    if (value == "") {
      return "请填写身份证号";
    } else if (!spaceReg.test(value)) {
      return "输入身份证号格式不正确";
    } else {
      return false
    }
  }
}

const timeUtils = {
  // 时间戳转化为时间格式
  formatTime: function(timestamp, formatType){
    function formatNumber(n) {
        n = n.toString()
        return n[1] ? n : '0' + n
    }
    const date = new Date(timestamp)
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
    let str = ''
    if(formatType == 'hh:mm:ss'){
      str = [hour, minute, second].map(formatNumber).join(':')
    }else{
      str = [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
    }
    return str
  },
}

export {
  baseUtils,
  fromUtils,
  timeUtils
} 